// 权限管理  (路由守卫)
import router from '@/router'
import store from '@/store'
// 进度条
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
import getPageTitle from './utils/get-page-title'
// 设置白名单
const whiteList = ['/login', '/404']
router.beforeEach((to, from, next) => {
  // console.log('到哪去', to, '从哪来', from.path)
  // 动态设置标题 方法1:
  // document.title = '人力资源管理系统-' + to.meta.title
  // 动态设置标题 方法2:
  document.title = getPageTitle(to.meta.title)

  NProgress.start() // 开启进度条
  // 判断是否有token
  // console.log(store.state.user.token)
  if (store.state.user.token) {
    // 有token, 判断是否去登录页
    if (to.path === '/login') {
      console.log('已在主页, 不能去登录页')
      next('/')
      NProgress.done()
    } else {
      console.log('不去登录页, 可以放行')
      // 判断vuex中是否有用户数据, 有的话就不需要重复发请求
      // console.log(store.state.user.userInfo.userId)
      if (!store.state.user.userInfo.userId) {
        store.dispatch('user/userInfo')
      }
      next()
    }
  } else {
    // 没有token, 判断是否去白名单
    // Array.includes()方法 返回的是boolean值
    if (whiteList.includes(to.path)) {
      // 放行
      console.log('去白名单,放行')
      next()
    } else {
      console.log('不在白名单里,跳转至登录页')
      next('/login')
      NProgress.done()
    }
  }
})

router.afterEach(() => NProgress.done()) // 关闭进度条, 如果跳转至了指定页面, 就不会执行,须手动调用一次
